Bienvenidos al examen final de GBI6 - Bioinformática.

CONTENIDO DE LA EVALUACIÓN

Los contenidos de esta evaluación corresponden a los temas de R revisados en el curso:

  • Tipos de datos

  • Instalación y uso de librerías.

  • Estructuras de control

  • Funciones

  • Manipulación de datos

  • Estadística básica

  • Visualización de datos

INDICACIONES GENERALES

Esta permitido consultar todo material disponible: diapositivas, google…Sin embargo NO esta permitido consultar a sus colegas.

Ustedes estan utilizando el R Markdown. Las instruciones son:

  • Creen una carpeta en su computador con el nombre “GBI6_ExamenFinal” donde guarden este cuaderno .Rmd.

  • Cree un subdirectorio de nombre “data” donde guarde la data que van a utilizar.

  • Cree un subdirectorio de nombre “results” donde guarde la tablas y figuras generadas del análisis.

  • Definan a esa carpeta como su directorio de trabajo.

  • Arriba, solamente donde dice “author”, deben llenar sus nombres.

  • Los codigos deben ser escritos dentro de las cajas que inician y terminan con ``` o dentro de las cajas indicadas abajo de las preguntas.

  • Al final del examen deben utilizar el comando “Knit” para generar un archivo .html

  • Es recomendable crear una copia de este script guía.

  • Genere controles de la versión para cada una de las preguntas con la leyenda “Nombre Apellido, resuelve el ejercicio XX”.

  • Copie y peque la dirección de su repositorio de GitHub en la actividad “ExamenFinal”.

  • Asegúrese de responder explícitamente cada una de las preguntas.

Para comprender la data de esta evaluación se requiere conocer el significado de algunos acrónimos de los tipos de cancer como indica el Broad Institute Cancer Names. Asimismo revise la información de ayuda para expresionsTCGA. La data contiene las columnas:

  • bcr_patient_barcode: es el identificador del paciente.

  • dataset: es el identificador del tipo de cancer del paciente.

  • resto de columnas: nivees de expresión de los diferentes mRNA de los genes que están como nombre de columna (para este análisis se han seleccionado solamente 7 de ellos).

PREGUNTAS

Pregunta 1: MANIPULACIÓN DE DATOS [4 PUNTOS]

[0.5 PUNTOS] 1.1 Defina su directorio de trabajo.

setwd("D:/Bioinformática/CSB-master/GBI6_ExamenFinal")
getwd()
## [1] "D:/Bioinformática/CSB-master/GBI6_ExamenFinal"

[0.5 PUNTOS] 1.2. Cargue la data “mRNA_expr.csv”

library(readr)
df <- read_csv("./data/mRNA_expr.csv")
## Rows: 1463 Columns: 9
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (2): bcr_patient_barcode, dataset
## dbl (7): GATA3, PTEN, XBP1, ESR1, MUC1, FN1, GAPDH
## 
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.

[1 PUNTO] 1.3 Cree una función de nombre long_df para transformar la data df de la forma wide a long.

library("tidyr")
long_df <- function(df) {
  long <- gather(df, gen, expresion_level, GATA3:GAPDH)
  }

[1 PUNTO] 1.4 Genere la data df_long utilizandola función long_df.

La tabla resultante tendrá tres columnas: dataset, gen, expresion_level.

df_long <- long_df(df)
df_long <- df_long[,-1]
head(df_long, n = 8)
## # A tibble: 8 x 3
##   dataset gen   expresion_level
##   <chr>   <chr>           <dbl>
## 1 BRCA    GATA3            2.87
## 2 BRCA    GATA3            2.17
## 3 BRCA    GATA3            1.32
## 4 BRCA    GATA3            1.84
## 5 BRCA    GATA3           -6.03
## 6 BRCA    GATA3            1.80
## 7 BRCA    GATA3           -4.88
## 8 BRCA    GATA3           -3.14

[0.5 PUNTOS] 1.5 A partir de la data df_long, genere un Descriptive table (librería sjPlot) y guárdelo en el subdirectorio “result” con el nombre mRNA_expr_summary.doc (previamente debe seleccionar las celdas adecuadas con funciones de la librería dplyr en conjunto con el operador %>%).

library(sjPlot)
library(sjmisc)
## 
## Attaching package: 'sjmisc'
## The following object is masked from 'package:tidyr':
## 
##     replace_na
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
agrup <- df_long %>% group_by(dataset,gen)
descr(x=agrup, out="browser", file="results/mRNA_expr_summary.doc")
Basic descriptives
grouped by BRCA, ESR1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 590 0 2.30 2.62 0.11 3.06 2.63 10.97 (-4.86-6.11) 3.17 -1.03

 

Basic descriptives
grouped by BRCA, FN1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 590 0 -0.06 1.29 0.05 0.10 0.02 7.03 (-3.8-3.23) 1.79 -0.53

 

Basic descriptives
grouped by BRCA, GAPDH
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 590 0 -1.13 0.67 0.03 -1.20 -1.16 4.58 (-3.12-1.46) 0.82 0.55

 

Basic descriptives
grouped by BRCA, GATA3
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 590 0 1.10 1.80 0.07 1.68 1.37 9.96 (-6.03-3.93) 2.02 -1.31

 

Basic descriptives
grouped by BRCA, MUC1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 590 0 1.85 1.50 0.06 2.25 2.03 7.07 (-2.79-4.28) 2.01 -0.95

 

Basic descriptives
grouped by BRCA, PTEN
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 590 0 0.75 0.69 0.03 0.81 0.79 5.2 (-2.4-2.8) 0.75 -0.86

 

Basic descriptives
grouped by BRCA, XBP1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 590 0 1.75 1.51 0.06 2.12 1.91 7.18 (-2.44-4.74) 1.75 -0.88

 

Basic descriptives
grouped by KIPAN, ESR1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 88 0 -2.41 0.73 0.08 -2.28 -2.35 3.48 (-4.55–1.07) 0.83 -0.77

 

Basic descriptives
grouped by KIPAN, FN1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 88 0 -1.77 0.92 0.10 -1.79 -1.81 4.52 (-3.51-1.01) 1.05 0.47

 

Basic descriptives
grouped by KIPAN, GAPDH
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 88 0 -0.70 0.71 0.08 -0.60 -0.66 3.42 (-2.78-0.64) 0.95 -0.53

 

Basic descriptives
grouped by KIPAN, GATA3
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 88 0 -3.85 0.87 0.09 -4.03 -3.93 5.06 (-5.53–0.46) 0.83 1.21

 

Basic descriptives
grouped by KIPAN, MUC1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 88 0 -0.08 1.13 0.12 -0.17 -0.11 5.04 (-2.22-2.82) 1.86 0.21

 

Basic descriptives
grouped by KIPAN, PTEN
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 88 0 0.72 0.55 0.06 0.81 0.75 2.65 (-0.57-2.09) 0.74 -0.54

 

Basic descriptives
grouped by KIPAN, XBP1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 88 0 -1.18 0.80 0.08 -1.07 -1.13 3.7 (-3.32-0.39) 1.04 -0.58

 

Basic descriptives
grouped by KIRP, ESR1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 16 0 -2.37 0.93 0.23 -2.11 -2.30 3.33 (-4.55–1.23) 0.68 -1.23

 

Basic descriptives
grouped by KIRP, FN1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 16 0 -2.41 0.89 0.22 -2.63 -2.51 3.7 (-3.51-0.19) 0.69 1.80

 

Basic descriptives
grouped by KIRP, GAPDH
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 16 0 -1.29 0.71 0.18 -1.17 -1.26 2.48 (-2.78–0.3) 0.87 -0.59

 

Basic descriptives
grouped by KIRP, GATA3
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 16 0 -3.71 1 0.25 -4.02 -3.90 3.91 (-4.37–0.46) 0.47 2.71

 

Basic descriptives
grouped by KIRP, MUC1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 16 0 -0.33 1.10 0.28 -0.45 -0.36 4.21 (-2.22-2) 1.35 0.17

 

Basic descriptives
grouped by KIRP, PTEN
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 16 0 0.73 0.51 0.13 0.75 0.77 1.76 (-0.39-1.37) 0.49 -0.99

 

Basic descriptives
grouped by KIRP, XBP1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 16 0 -2.20 0.87 0.22 -2.32 -2.30 3.7 (-3.32-0.39) 0.96 1.76

 

Basic descriptives
grouped by LUSC, ESR1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 154 0 -2.99 1.05 0.08 -3.06 -3.07 5.62 (-5.2-0.42) 1.04 0.79

 

Basic descriptives
grouped by LUSC, FN1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 154 0 -0.98 1.07 0.09 -1.04 -1 5.2 (-3.45-1.75) 1.42 0.17

 

Basic descriptives
grouped by LUSC, GAPDH
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 154 0 -0.54 0.68 0.05 -0.58 -0.56 4.61 (-2.61-2) 0.84 0.34

 

Basic descriptives
grouped by LUSC, GATA3
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 154 0 -3.76 0.91 0.07 -3.93 -3.87 6.26 (-5.06-1.2) 1.03 1.84

 

Basic descriptives
grouped by LUSC, MUC1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 154 0 0.56 1.15 0.09 0.65 0.57 5.05 (-1.81-3.24) 1.82 -0.04

 

Basic descriptives
grouped by LUSC, PTEN
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 154 0 0.25 0.66 0.05 0.30 0.29 3.41 (-1.94-1.47) 0.88 -0.68

 

Basic descriptives
grouped by LUSC, XBP1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 154 0 -0.29 0.82 0.07 -0.42 -0.33 4.49 (-2.29-2.19) 0.98 0.50

 

Basic descriptives
grouped by OV, ESR1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 561 0 1.49 1.20 0.05 1.62 1.62 9.37 (-5.03-4.33) 1.21 -1.79

 

Basic descriptives
grouped by OV, FN1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 561 0 -1.44 1.33 0.06 -1.64 -1.52 6.56 (-4.06-2.49) 2.02 0.48

 

Basic descriptives
grouped by OV, GAPDH
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 561 0 -0.99 0.62 0.03 -1.02 -1 4.17 (-2.7-1.48) 0.76 0.16

 

Basic descriptives
grouped by OV, GATA3
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 561 0 -4.23 0.73 0.03 -4.25 -4.24 7.36 (-5.96-1.4) 0.88 1.04

 

Basic descriptives
grouped by OV, MUC1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 561 0 2.27 1.03 0.04 2.47 2.36 7.89 (-3.32-4.56) 1.13 -1.14

 

Basic descriptives
grouped by OV, PTEN
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 561 0 0.57 0.77 0.03 0.65 0.63 5.48 (-2.75-2.73) 0.97 -0.86

 

Basic descriptives
grouped by OV, XBP1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 561 0 -0.87 0.92 0.04 -0.83 -0.88 5.1 (-3.19-1.91) 1.32 0.09

 

Basic descriptives
grouped by UCEC, ESR1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 54 0 2.17 1.93 0.26 2.77 2.41 7.86 (-3.12-4.74) 2.24 -1.17

 

Basic descriptives
grouped by UCEC, FN1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 54 0 -2.14 0.95 0.13 -2.27 -2.23 4.41 (-3.52-0.89) 1.20 1.07

 

Basic descriptives
grouped by UCEC, GAPDH
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 54 0 -0.60 0.43 0.06 -0.66 -0.61 1.85 (-1.57-0.28) 0.65 0.11

 

Basic descriptives
grouped by UCEC, GATA3
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 54 0 -4.12 1.03 0.14 -4.20 -4.26 5.98 (-5.54-0.44) 0.86 2.10

 

Basic descriptives
grouped by UCEC, MUC1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 54 0 1.91 1.16 0.16 1.94 1.98 5.32 (-1.06-4.26) 1.30 -0.47

 

Basic descriptives
grouped by UCEC, PTEN
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 54 0 0.08 0.91 0.12 0.24 0.11 4.12 (-2.34-1.78) 1.36 -0.40

 

Basic descriptives
grouped by UCEC, XBP1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 54 0 -0.33 1.07 0.14 -0.20 -0.29 4.45 (-2.85-1.6) 1.42 -0.43

[0.5 PUNTOS] 1.6 Interprete los resultados de la tabla resultante de la sección 1.5.

Tipos de cáncer y data proveniente de: [TGA CÁNCER])https://gdac.broadinstitute.org/)

#La tabla resultante del archivo <mRNA_expr_summary.doc >, representa un resumen
#de los datos estadísticos de manera agrupada, enfocados en la expresión de los
#genes de los distintos tipos de cánceres
#Tras analizar los valores obtenidos de la media y la curtosis, se puede 
#determinar que los genes de MUC1 (media= 1.74) y ESR1 (media= 1.09), son los que
#mayor expresión tiene, y el menor gen que se expresa es el GATA3 (meadia= -2.0)

Pregunta 2 VISUALIZACION DE DATOS [5 PUNTOS]

Para esta pregunta tiene que utilizar la data df_long.

[1 PUNTO] 2.1 Cree la funcion tcga_boxplots para visualizar boxplots y jitterplots. El único parámetro de la función es dataset. La función debe crear un boxplot de los niveles de expresión para cada gen.

library(ggplot2)
library(dplyr)
tcga_boxplots <- function(dataset){
  ggplot(df_long, aes(x = gen, y = expresion_level, 
                      colour = gen)) + 
    geom_point(alpha = 0.3, position = "jitter") + 
    geom_boxplot(alpha = 0, colour = "black") 
  }
#Se añade la gráfica para ver la interacción de cada dataset con los genes 
#y su nivel de expresión, ya que la función tcga_boxplots permite visuaizar
#los genes involucrados

 ggplot(df_long, aes(x = gen, y = expresion_level, 
                      colour = dataset)) + 
    geom_point(alpha = 0.3, position = "jitter") + 
    geom_boxplot(alpha = 0, colour = "black")

[0.5 PUNTOS] 2.2 Utilizando la función lapply() genera la lista cancertype_boxplots con las gráficas para cada tipo de cancer (cada tipo de dataset).

cancertype_boxplots <- lapply(unique(df_long$dataset), tcga_boxplots)
cancertype_boxplots
## [[1]]

## 
## [[2]]

## 
## [[3]]

## 
## [[4]]

## 
## [[5]]

## 
## [[6]]

[0.5 PUNTOS] 2.3 Guarde en el subdirectorio result el tercer plot de la lista cancertype_boxplots con el nombre boxplot3.png. La definición de a figura debe ser de 300dpi.

plot3 <- cancertype_boxplots[[3]] + ggtitle("Cáncer KIRP") 
ggsave("results/boxplot3.png", dpi = 300)
## Saving 7 x 5 in image
plot3

[1 PUNTO] 2.4 Escriba la función reg_gen_expression, con el parámetro gen. En este caso la función visualizará una gráfica de nube de puntos (geom_point) y una regresión por tipo de “dataset”. La gráfica será de comparación de gen1 con gen2; por ejemplo en el eje “x” GATA3 y en el eje “y”" FN1.

reg_gen_expression <- function(gen){
  xgen=df_long$gen
  ygen=df_long$gen
  x <- df_long %>% filter(gen[1] == xgen)
  y <- df_long %>% filter(gen[2] == ygen)
  #Combinación
  z <- cbind(x, y) 
  w <- tibble("dataset"=z[,1],"genx"=z[,2],"geny"=z[,5])
  ggplot(w, aes(x = genx, y = geny, colour = dataset)) + 
    geom_point(position = position_jitter())
  }

[0.5 PUNTOS] 2.5. Utilizando la función lapply() genera la lista reg_genplots con las gráficas para cada par de genes posibles. Recuerde que tiene 7 tipos de genes, se debe tener todas las combinaciones posibles por pares de genes (combinatoria sin repetición).

genall <- unique(df_long$gen)
gencomb <- combn(genall, 2, simplify = FALSE)

reg_genplots <- lapply(gencomb, reg_gen_expression)
reg_genplots
## [[1]]

## 
## [[2]]

## 
## [[3]]

## 
## [[4]]

## 
## [[5]]

## 
## [[6]]

## 
## [[7]]

## 
## [[8]]

## 
## [[9]]

## 
## [[10]]

## 
## [[11]]

## 
## [[12]]

## 
## [[13]]

## 
## [[14]]

## 
## [[15]]

## 
## [[16]]

## 
## [[17]]

## 
## [[18]]

## 
## [[19]]

## 
## [[20]]

## 
## [[21]]

[0.5 PUNTOS] 2.6. Guarde en el subdirectorio result el onceavo plot de la lista reg_genplots con el nombre regresion11.pdf. La definición de a figura debe ser de 300dpi.

plot11 <- reg_genplots[[11]]
ggsave("results/regresion11.pdf", dpi = 300)
## Saving 7 x 5 in image
plot11

[1 PUNTO] 2.7. Interprete los resultados de las figuras boxplot3.png y regresion11.pdf.

#bloxplot3.pnf

#En la figura de boxplot3.png, laca gráfica de caja de bigotes muestra en los 
#genes de mayor expresión (ESR1 y MUC1) y en los de menor expresión (GATA3) una
#distribución asimétrica; aún más, el boxplot corrobora que la expresión de los
#genes ESR1 y MUC1 son los que se expresan en mayor cantidad.

#regresion11.pdf

#Posiblemente a algún error del que debido al tiempo ya no se pudo corregir
#la gráfica presenta mucho ruido y no permite evidenciar la regresión entre la 
#combinación de los genes, hasta la última instancia se hizo lo posible.

3. CONTROL DE LA VERSIÓN [1 PUNTO]. Se verficará en ell repositorio de GitHub.